package com.sikaryofficial.common.core.secure;

import cn.hutool.crypto.symmetric.SymmetricAlgorithm;

import javax.annotation.PostConstruct;

/**
 * 加解密组件
 *
 * @author feng
 */
public interface SecureComponent {

    /**
     * 加密
     *
     * @param originalText 原文
     * @return 密文
     */
    default String encrypt(String originalText){
        return null;
    }
    default boolean verify(String origin, String signature)
    {
        return false;
    }

    /**
     * 解密
     *
     * @param encryptedText 密文
     * @return 解密后的明文
     */
    default String decrypt(String encryptedText){
        return null;
    }

    /**
     * 获取加解密算法类型
     *
     * @return 加解密算法类型
     */
    SymmetricAlgorithm getAlgorithmType();


    @PostConstruct
    default void registerToFactory() {
        SecureComponentFactory.registerBean(this);
    }
}
